package cn.rkylin.oms.goods.dao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import cn.rkylin.core.IDataBaseFactory;
import cn.rkylin.oms.goods.domain.GoodsSku;
import cn.rkylin.oms.goods.vo.GoodsSkuVO;
import cn.rkylin.oms.goods.vo.GoodsVO;
import cn.rkylin.oms.goods.vo.PrjSkuVO;

/**
 * 系统商品数据访问层
 *
 * @author wangxing
 * @version 1.0.0
 * @created 2017-7-5
 */
@Repository(value = "goodsDAO")
public class GoodsDAOImpl implements IGoodsDAO {

    @Autowired
    protected IDataBaseFactory dao;

    /**
     * 构造函数
     */
    public GoodsDAOImpl() {

    }

    /**
     * 查询系统商品
     *
     * @param goodsVO
     * @return
     */
    public List<GoodsVO> findByWhere(GoodsVO goodsVO) {
        return null;
    }

    @Override
    public int insert(GoodsVO goodsVO) throws Exception {
        return dao.insert("insertSelectiveGoods", goodsVO);
    }

    @Override
    public int update(GoodsVO goodsVO) throws Exception {
        return dao.update("updateByPrimaryKeySelectiveGoods", goodsVO);
    }

    @Override
    public int delete(String id) throws Exception {
        return dao.delete("deleteByPrimaryKeyGoods", id);
    }

    @Override
    public int insertSku(GoodsSkuVO goodsSkuVO) throws Exception {
        return dao.insert("insertSelectiveGoodsSku", goodsSkuVO);
    }

    @Override
    public int updateSku(GoodsSkuVO goodsSkuVO) throws Exception {
        return dao.update("updateByPrimaryKeySelectiveGoodsSku", goodsSkuVO);
    }

    @Override
    public int updateGoodsSkuCostBySkuId(GoodsSkuVO goodsSkuVO) throws Exception{
        return dao.update("updateGoodsSkuCostBySkuId", goodsSkuVO);
    }

    @Override
    public int deleteSku(String id) throws Exception {
        return dao.delete("deleteByPrimaryKeyGoodsSku", id);
    }

    @Override
    public int deleteSkuByGoodsId(String id) throws Exception {
        return dao.delete("deleteByPrimaryKeyByGoodsId", id);
    }

    @Override
    public int deletePrjSkuByGoodsId(String id) throws Exception {
        // TODO Auto-generated method stub
        return 0;
    }

    public int deletePrjSkuByGoodsId(GoodsVO goodsVO) throws Exception {
        return dao.update("deletePrjSkuByGoodsId", goodsVO);
    }

    @Override
    public int deletePrjSkuByGoodsSkuId(PrjSkuVO prjSkuVO) throws Exception {
        return dao.update("deletePrjSkuByGoodsSkuId", prjSkuVO);
    }

    @Override
    public int insertPrjSku(PrjSkuVO prjSkuVO) throws Exception {
        return dao.insert("insertSelectivePrjSku", prjSkuVO);
    }

    @Override
    public int updatePrjSku(PrjSkuVO prjSkuVO) throws Exception {
        return dao.update("updateByPrimaryKeySelectivePrjSku", prjSkuVO);
    }

    public int updatePrjSkuByGoodsId(PrjSkuVO prjSkuVO) throws Exception {
        return dao.update("updatePrjSkuByGoodsId", prjSkuVO);
    }

    public int updatePrjSkuByGoodsSkuId(PrjSkuVO prjSkuVO) throws Exception {
        return dao.update("updatePrjSkuByGoodsSkuId", prjSkuVO);
    }

    public int updateGoodsSkuByGoodsId(GoodsSkuVO SkuVO) throws Exception {
        return dao.update("updateGoodsSkuByGoodsId", SkuVO);
    }

    @Override
    public int deletePrjSku(String id) throws Exception {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public int updateCatgNameByCatgId(GoodsVO goodsVO) throws Exception {
        // TODO Auto-generated method stub
        return dao.update("updateCatgNameByCatgId", goodsVO);
    }

    @Override
    public int updateCatgNameByCatgIds(GoodsVO goodsVO) throws Exception {
        return dao.update("updateCategoryByGoodsIds", goodsVO);
    }

    /**
     * 查询项目sku列表为采购入库单
     * 
     * @param prjSkuVO
     *            项目sku VO
     * @throws Exception
     *             异常
     */
    public List<PrjSkuVO> selectPrjSkuListForStockIn(PrjSkuVO prjSkuVO) throws Exception {
        return dao.findAllList("selectPrjSkuListForStockIn", prjSkuVO);
    }
    
    public List<PrjSkuVO> selectPrjSkuListForCainiao(PrjSkuVO prjSkuVO) throws Exception {
        return dao.findAllList("selectPrjSkuListForCainiao", prjSkuVO);
    }

    @Override
    public GoodsSku getGoodsSkuBySkuId(String skuId) throws Exception {
        return dao.findOne("selectByPrimaryKeyGoodsSku",skuId);
    }

    /**
     * 获取系统规格删除校验查询
     * @param statement
     * @param skuId
     * @return
     * @throws Exception
     */
    @Override
    public List<HashMap> selectGoodsSkuInOthers(String statement,String skuId) throws Exception {
        return dao.findList(statement, skuId);
    }

    @Override
    public int selectCount(Map<String,Object> params) throws Exception {
        List resultList = dao.findList("selectCount", params);
        if (resultList != null && resultList.size() > 0) {
            return (Integer)resultList.get(0);
        }
        
        return 0;
    }

}
